from django.conf import settings
from django.db import models


# 公共抽象模型
class BaseModel(models.Model):
    '''
    auto_now_add:每次新增时创建
    auto_now:每次保存时创建
    '''
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间', null=True)
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间', null=True)
    desc = models.TextField(null=True, blank=True, verbose_name='描述')
    create_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, verbose_name='创建者',
                                  related_name='%(app_label)s_%(class)s_create_user')
    update_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, verbose_name='更新者',
                                  related_name='%(app_label)s_%(class)s_update_user')

    def __str__(self):
        '''
        检查当前对象是否有 name 属性（也就是模型类中是否定义了 name 字段
        '''
        if hasattr(self, 'name'):
            return self.name
        return self.desc

    class Meta:
        abstract = True  # 定义为抽象表，不会被数据库创建，也必须明确有定义这个，继承这个则不受影响
        ordering = ['-id']
